# 购物车程序项目：
#
# 要求：1、运行程序后，让用户输入支付宝余额，然后打印我们的商品列表给用户。
#      2、让用户输入商品编号进行商品的购买。
#      3、用户选择商品后，检查用户的余额是否够，若够则直接扣款，不够则提醒用户。
#      4、用户可以随时退出购买，推出时打印用户已购买的商品和支付宝余额。

# 1、运行程序后，让用户输入支付宝余额，然后打印我们的商品列表给用户。
# 商品列表数据
good_list = [
    ['柠檬茶',12],
    ['奶茶',10],
    ['咖啡',20],
    ['牛奶',15],
    ['汽水',7]
]
# 写到某一步发现前面需要内容，可以优化
user_shopping_car = [] # 创建用户列表，即是购物车，然后用append增加
# 用户输入 input
Alipay = int(input("请输入您的余额："))
# 打印商品信息，打印商品的次数由商品的列表的长度决定的，用(len(good_list))
while True: #将实现每一次购买过程的循环
    print("------商品列表信息------")
    for i in range(len(good_list)):
        # 给格式化的样式（先给格式）
        # 样式("商品编号：xx,商品的名称：xx,商品的价格：xx")是给不懂的人完成的
        print("商品编号：%s,商品的名称：%s,商品的价格：%s元"%(i,good_list[i][0],good_list[i][1])) #因为用了for循环，i就是商品的索引

    # 2、让用户输入商品编号进行商品的购买。
    # 让用户输入商品编号
    choice = input("请输入正确的商品编号进行购买（如果退出请输入q）：")
    # 判断商品编号是否在我们的范围内
    if choice.isdigit(): # 用isdigit 判断字符串是否是数值
        choice = int(choice) # 如果是数值，把他变成int
        if choice > len(good_list):
            print("您输入的商品不存在，请检查再次输入")
        else:
                # 对比商品编号，找到对应商品，价格，good_list[choice][1]
                # 1.检查用户余额和商品价格关系
            if Alipay > good_list[choice][1]:
                # 买得起 1.扣钱 2.把商品加入用户购物列表
                Alipay = Alipay - good_list[choice][1]
                user_shopping_car.append(good_list[choice])
                print("【%s】已经加入您的购物车，您的【余额】还有%s 元"%(good_list[choice][0],Alipay))
            else:
                print("您的余额不足以购买，请更换支付方式")
    elif choice == "q":
        # 如果用户输入q的话，则说明用户要退出购买，我们将打印用户已经购买的商品列表，以及用户余额
        print("您的购物车：",user_shopping_car)
        print("您的账户余额：%s 元"%(Alipay))
        break
    else:
        print("请输入正确的【商品编码】！！按照输入提示进行输入")



